package com.yue.excel;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Author: yyk
 * @Description: 创建一个新的Excel文件并写入一些数据
 * @Date: Created in 13:53 2024/8/4
 * @Since version-1.0
 */
public class ExcelWriteTest {
    // 你的Excel文件的保存路径
    String excelFilePath = "D:\\Program Files\\JetBrains\\excel_util\\";
    @Test
    public void writeExcel03() {

        // 创建一个新的Excel工作簿 ，这里是03版本的
        HSSFWorkbook workbook = new HSSFWorkbook();

        // 创建一个新的工作表
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建第一行
        Row row1 = sheet.createRow(0);

        // （1，1）第一行第一列
        Cell cell11 = row1.createCell(0);
        cell11.setCellValue("产品名称");

        //（1，2）
        Cell cell12 = row1.createCell(1);
        cell12.setCellValue("ZGN233");

        Row row2 = sheet.createRow(1);
        //(2,1) 第二行第一列
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue("产品价格");

        //(2,2)
        Cell cell22 = row2.createCell(1);
        cell22.setCellValue(100);

        // 将工作簿写入文件
        try (FileOutputStream outputStream = new FileOutputStream(excelFilePath + "测试文件03.xls")) {

            workbook.write(outputStream);

            System.out.println("数据已成功写入测试文件03版本Excel文件：" + excelFilePath);


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭工作簿
            try {

                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


    @Test
    public void writeExcel07() {
        // 创建一个新的Excel工作簿，这里是07版本
        Workbook workbook = new XSSFWorkbook();

        // 创建一个新的工作表
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建一些数据以写入到工作表中
        Object[][] data = {
                {"Name", "Age", "Gender"},
                {"John", 25, "Male"},
                {"Lisa", 28, "Female"},
                {"Mike", 30, "Male"}
        };

        // 写入数据到工作表中
        int rowNum = 0;
        for (Object[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for (Object field : rowData) {
                Cell cell = row.createCell(colNum++);
                if (field instanceof String) {
                    cell.setCellValue((String) field);
                } else if (field instanceof Integer) {
                    cell.setCellValue((Integer) field);
                }
            }
        }

        // 调整列宽以适应内容
        for (int i = 0; i < data[0].length; i++) {
            sheet.autoSizeColumn(i);
        }

        // 将工作簿写入文件
        try (FileOutputStream outputStream = new FileOutputStream(excelFilePath+"测试文件07.xlsx")) {
            workbook.write(outputStream);
            System.out.println("数据已成功写入测试文件07版本Excel文件：" + excelFilePath);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭工作簿
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
